package com.koron.css2.meterService.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.koron.css2.serviceManage.bean.UserInfoBean;
import com.koron.util.DateUtils;
import com.koron.util.Tools;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

@Data
public class MsInfoDto {
	
	/**
	 * 主键
	 */
	private String id;
	
    /**
     * 用户编号
     */
    private String userNo;
    /**
     * 用户名称
     */
    private String userName;
    
    /**
     * 客户名称
     */
    private String ctmName;
	
    /**
     * 水表编号
     */
    private String meterNo;
	/**
     * 出厂编号
     */
    private String factoryNo;
	/**
     * 水表口径
     */
    private String meterBore;
    /**
     * 水表口径
     */
    private String meterBoreName;
    /**
     * 水表厂家
     */
    private String meterFactory;
    
    /**
     * 水表厂家
     */
    private String meterFactoryName;
    
    /**
     * 水表形态
     */
	private String meterForm;
    
    /**
     * 水表形态
     */
	private String meterFormName;
    
    
    /**
     * 水表类型
     */
	private String meterType;
	
	 /**
     * 水表类型
     */
	private String meterTypeName;
	
	/**
     * 水表型号
     */
	private String meterModel;
	
	/**
     * 水表型号
     */
	private String meterModelName;
	
	
	/**
     * 合格证号
     */
    private String meterCert;
	
	/**
     * 水表状态
     */
    private String meterStatus;

	/**
	 * 装表地址
	 */
	private String setupMeterAddr;

	@ApiModelProperty("开始使用日期")
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date startDate;

	@ApiModelProperty("装表日期")
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date installDate;
	
    /**
     * 客户地址
     */
    private String ctmAddr;
    
    /**
     * 册本号
     */
    private String bookNo;
	
	/**
     * 水表状态
     */
    private String meterStatusName;
    /**
     * 所属部门
     */
	private String departBelong;
    
    /**
     * 所属部门
     */
	private String departBelongName;
    
    /**
     * 入库日期
     */
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date createTime;
	
	/**
	 * 远程通讯费用
	 */
	private String transCommFee;
	/**
	 * 通讯商
	 */
	private String commOperator;
	
	/**
	 * 通讯商
	 */
	private String commOperatorName;
	
	/**
	 * 通讯费用开始日期
	 */
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date commFeeStart;
	
	/**
	 * 通讯费用结束日期
	 */
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date commFeeEnd;
	
	/**
	 * 操作类型
	 */
	private Integer operateType;
	
	/**
	 * 过期日期
	 */
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date expireDate;
	
	/**
	 * IMEI
	 */
	private String imei;
	
	/**
	 * IMSI
	 */
	private String imsi;
	
	/**
	 * sim 卡
	 */
	private String sim;
	
	/**
	 * 传输方式
	 * @return
	 */
	private String transmittalModel;
	/**
	 * 传输方式
	 * @return
	 */
	private String transmittalModelName;
	
	/**
	 * 水表型式
	 * @return
	 */
	private String meterPattern;
	
	/**
	 * 水表型式
	 * @return
	 */
	private String meterPatternName;
	
	/**
	 * 是否阀控表
	 * @return
	 */
	private Integer valveControl; 
	
	/**
	 * 是否阀控表
	 * @return
	 */
	private String valveControlName;
	
	/**
	 * 下行规约
	 * @return
	 */
	private String protocol;
	
	/**
	 * 下行规约
	 * @return
	 */
	private String protocolName;
	
	/**
	 * 水表传感器
	 * @return
	 */
	private String meterSensor;
	
	/**
	 * 水表传感器
	 * @return
	 */
	private String meterSensorName;
	
	/**
	 * 满码值
	 * @return
	 */
	private BigDecimal maxValue;
	
	/**
	 * 使用期限
	 * @return
	 */
	private int shelfLife;
	/**
	 * 阀门状态
	 */
	private String valveStatus;
	/**
	 * 阀门状态
	 */
	private String valveStatusName;
	/**
	 * 上传标识  1：为失败
	 */
	private Integer uploadFlag;
	/**
	 * 周检起算日
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date mtdycChkDate;

	/*
	 * 建立人
	 */
	private String createName;

	/*
	 * 建立人ID
	 */
	private String createAccount;

	/*
	 * 最后修改时间
	 */
	private String updateTime;

	/*
	 * 最后修改人
	 */
	private String updateName;

	/*
	 * 最后修改人ID
	 */
	private String updateAccount;

//	public String getSim() {
//		return sim;
//	}
//
//	public void setSim(String sim) {
//		this.sim = sim;
//	}
//
//	public Date getMtdycChkDate() {
//		return mtdycChkDate;
//	}
//
//	public void setMtdycChkDate(Date mtdycChkDate) {
//		this.mtdycChkDate = mtdycChkDate;
//	}
//
//
//	public Integer getUploadFlag() {
//		return uploadFlag;
//	}
//
//	public void setUploadFlag(Integer uploadFlag) {
//		this.uploadFlag = uploadFlag;
//	}
//
//
//	public String getValveStatusName() {
//		return valveStatusName;
//	}
//
//	public void setValveStatusName(String valveStatusName) {
//		this.valveStatusName = valveStatusName;
//	}
//
//	public String getValveStatus() {
//		return valveStatus;
//	}
//
//	public void setValveStatus(String valveStatus) {
//		this.valveStatus = valveStatus;
//	}
//
//	public String getValveControlName() {
//		return valveControlName;
//	}
//
//	public void setValveControlName(String valveControlName) {
//		this.valveControlName = valveControlName;
//	}
//
//	public String getTransmittalModelName() {
//		return transmittalModelName;
//	}
//
//	public void setTransmittalModelName(String transmittalModelName) {
//		this.transmittalModelName = transmittalModelName;
//	}
//
//	public String getMeterPattern() {
//		return meterPattern;
//	}
//
//	public void setMeterPattern(String meterPattern) {
//		this.meterPattern = meterPattern;
//	}
//
//	public String getMeterPatternName() {
//		return meterPatternName;
//	}
//
//	public void setMeterPatternName(String meterPatternName) {
//		this.meterPatternName = meterPatternName;
//	}
//
//
//
//	public Integer getValveControl() {
//		return valveControl;
//	}
//
//	public void setValveControl(Integer valveControl) {
//		this.valveControl = valveControl;
//	}
//	public String getProtocol() {
//		return protocol;
//	}
//
//	public void setProtocol(String protocol) {
//		this.protocol = protocol;
//	}
//
//	public String getProtocolName() {
//		return protocolName;
//	}
//
//	public void setProtocolName(String protocolName) {
//		this.protocolName = protocolName;
//	}
//
//	public String getMeterSensor() {
//		return meterSensor;
//	}
//
//	public void setMeterSensor(String meterSensor) {
//		this.meterSensor = meterSensor;
//	}
//
//	public String getMeterSensorName() {
//		return meterSensorName;
//	}
//
//	public void setMeterSensorName(String meterSensorName) {
//		this.meterSensorName = meterSensorName;
//	}
//
//	public BigDecimal getMaxValue() {
//		return maxValue;
//	}
//
//	public void setMaxValue(BigDecimal maxValue) {
//		this.maxValue = maxValue;
//	}
//
//	public int getShelfLife() {
//		return shelfLife;
//	}
//
//	public void setShelfLife(int shelfLife) {
//		this.shelfLife = shelfLife;
//	}
//
//	public String getImsi() {
//		return imsi;
//	}
//
//	public void setImsi(String imsi) {
//		this.imsi = imsi;
//	}
//
//	public String getCtmAddr() {
//		return ctmAddr;
//	}
//
//	public String getImei() {
//		return imei;
//	}
//
//	public void setImei(String imei) {
//		this.imei = imei;
//	}
//
//	public String getBookNo() {
//		return bookNo;
//	}
//
//	public void setCtmAddr(String ctmAddr) {
//		this.ctmAddr = ctmAddr;
//	}
//
//	public void setBookNo(String bookNo) {
//		this.bookNo = bookNo;
//	}
//
//	public Date getStartDate() {
//		return startDate;
//	}
//
//	public void setStartDate(Date startDate) {
//		this.startDate = startDate;
//	}
//
//
//
//	public Date getExpireDate() {
//		return expireDate;
//	}
//
//	public void setExpireDate(Date expireDate) {
//		this.expireDate = expireDate;
//	}
//
//	public Integer getOperateType() {
//		return operateType;
//	}
//
//	public void setOperateType(Integer operateType) {
//		this.operateType = operateType;
//	}
//
//	public Date getCommFeeEnd() {
//		return commFeeEnd;
//	}
//
//	public Date getCommFeeStart() {
//		return commFeeStart;
//	}
//	public String getCommOperator() {
//		return commOperator;
//	}
//	public String getCommOperatorName() {
//		return commOperatorName;
//	}
//	public String getCtmName() {
//		return ctmName;
//	}
//	public String getDepartBelong() {
//		return departBelong;
//	}
//	public String getDepartBelongName() {
//		return departBelongName;
//	}
//	public String getFactoryNo() {
//		return factoryNo;
//	}
//	public String getMeterBore() {
//		return meterBore;
//	}
//	public String getMeterBoreName() {
//		return meterBoreName;
//	}
//	public String getMeterCert() {
//		return meterCert;
//	}
//	public String getMeterFactory() {
//		return meterFactory;
//	}
//	public String getMeterFactoryName() {
//		return meterFactoryName;
//	}
//	public String getMeterForm() {
//		return meterForm;
//	}
//	public String getMeterFormName() {
//		return meterFormName;
//	}
//	public String getMeterModel() {
//		return meterModel;
//	}
//	public String getMeterModelName() {
//		return meterModelName;
//	}
//	public String getMeterNo() {
//		return meterNo;
//	}
//	public String getMeterStatus() {
//		return meterStatus;
//	}
//	public String getMeterStatusName() {
//		return meterStatusName;
//	}
//	public String getMeterType() {
//		return meterType;
//	}
//	public String getMeterTypeName() {
//		return meterTypeName;
//	}
//	public String getTransCommFee() {
//		return transCommFee;
//	}
//	public String getUserName() {
//		return userName;
//	}
//	public String getUserNo() {
//		return userNo;
//	}
//	public void setCommFeeEnd(Date commFeeEnd) {
//		this.commFeeEnd = commFeeEnd;
//	}
//	public void setCommFeeStart(Date commFeeStart) {
//		this.commFeeStart = commFeeStart;
//	}
//	public void setCommOperator(String commOperator) {
//		this.commOperator = commOperator;
//	}
//	public void setCommOperatorName(String commOperatorName) {
//		this.commOperatorName = commOperatorName;
//	}
//	public void setCtmName(String ctmName) {
//		this.ctmName = ctmName;
//	}
//	public void setDepartBelong(String departBelong) {
//		this.departBelong = departBelong;
//	}
//	public void setDepartBelongName(String departBelongName) {
//		this.departBelongName = departBelongName;
//	}
//	public void setFactoryNo(String factoryNo) {
//		this.factoryNo = factoryNo;
//	}
//	public void setMeterBore(String meterBore) {
//		this.meterBore = meterBore;
//	}
//	public void setMeterBoreName(String meterBoreName) {
//		this.meterBoreName = meterBoreName;
//	}
//	public void setMeterCert(String meterCert) {
//		this.meterCert = meterCert;
//	}
//	public void setMeterFactory(String meterFactory) {
//		this.meterFactory = meterFactory;
//	}
//	public void setMeterFactoryName(String meterFactoryName) {
//		this.meterFactoryName = meterFactoryName;
//	}
//	public void setMeterForm(String meterForm) {
//		this.meterForm = meterForm;
//	}
//	public void setMeterFormName(String meterFormName) {
//		this.meterFormName = meterFormName;
//	}
//	public String getId() {
//		return id;
//	}
//
//	public void setId(String id) {
//		this.id = id;
//	}
//
//	public void setMeterModel(String meterModel) {
//		this.meterModel = meterModel;
//	}
//	public void setMeterModelName(String meterModelName) {
//		this.meterModelName = meterModelName;
//	}
//	public void setMeterNo(String meterNo) {
//		this.meterNo = meterNo;
//	}
//	public void setMeterStatus(String meterStatus) {
//		this.meterStatus = meterStatus;
//	}
//	public void setMeterStatusName(String meterStatusName) {
//		this.meterStatusName = meterStatusName;
//	}
//	public void setMeterType(String meterType) {
//		this.meterType = meterType;
//	}
//	public void setMeterTypeName(String meterTypeName) {
//		this.meterTypeName = meterTypeName;
//	}
//	public void setTransCommFee(String transCommFee) {
//		this.transCommFee = transCommFee;
//	}
//	public void setUserName(String userName) {
//		this.userName = userName;
//	}
//	public void setUserNo(String userNo) {
//		this.userNo = userNo;
//	}
//
//	public String getTransmittalModel() {
//		return transmittalModel;
//	}
//
//	public void setTransmittalModel(String transmittalModel) {
//		this.transmittalModel = transmittalModel;
//	}

	@Override
	public String toString() {
		return "MsInfoDto [id=" + id + ", userNo=" + userNo + ", userName=" + userName + ", ctmName=" + ctmName
				+ ", meterNo=" + meterNo + ", factoryNo=" + factoryNo + ", meterBore=" + meterBore + ", meterBoreName="
				+ meterBoreName + ", meterFactory=" + meterFactory + ", meterFactoryName=" + meterFactoryName
				+ ", meterForm=" + meterForm + ", meterFormName=" + meterFormName + ", meterType=" + meterType
				+ ", meterTypeName=" + meterTypeName + ", meterModel=" + meterModel + ", meterModelName="
				+ meterModelName + ", meterCert=" + meterCert + ", meterStatus=" + meterStatus + ", meterStatusName="
				+ meterStatusName + ", departBelong=" + departBelong + ", departBelongName=" + departBelongName
				+ ", createTime=" + createTime + ", transCommFee=" + transCommFee + ", commOperator=" + commOperator
				+ ", commOperatorName=" + commOperatorName + ", commFeeStart=" + commFeeStart + ", commFeeEnd="
				+ commFeeEnd + ", operateType=" + operateType + "]";
	}

	public void setCreateInfo(UserInfoBean userInfo) {
		setId(Tools.getObjectId());
		setCreateAccount(userInfo.getUserInfo().getAcount());
		setCreateName(userInfo.getUserInfo().getName());
		setCreateTime(new Date());
	}

	public void setUpdateInfo(UserInfoBean userInfo) {
		setUpdateAccount(userInfo.getUserInfo().getAcount());
		setUpdateName(userInfo.getUserInfo().getName());
		setUpdateTime(DateUtils.parseDate(new Date(), "yyyy-MM-dd HH:mm:ss"));
	}
}
